var IP2Integer = function (ipString) {
    let ipSlices = ipString.split(".");

    let result = 0;
    for (let i = 0; i < ipSlices.length; i++) {
        // 将 ip 的每一段解析为 int，并根据位置左移 8 位
        let intSlice = parseInt(ipSlices[i]) << 8 * (3 - i);
        console.log("第" + (i + 1) + "段：" + intSlice)

        // 求或
        // result = result | intSlice;
        result += intSlice
    }

    console.log("IP转整数结果为：" + result);
}

IP2Integer("255.255.255.255")
IP2Integer("110.111.112.113")

var Integer2Ip = function (ipNumber) {

    let ipString = [];

    for (let i = 0; i < 4; i++) {
        // 每 8 位为一段，这里取当前要处理的最高位的位置
        let pos = (3 - i) * 8;

        // 取当前处理的 ip 段的值
        let and = ipNumber & (255 << pos);
        console.log("第" + (i + 1) + "段：" + and)

        // 将当前 ip 段转换为 0 ~ 255 的数字，注意这里必须使用无符号右移
        ipString[i] = and >>> pos;
    }

    console.log("整数转IP结果为：" + ipString.join("."));
}

Integer2Ip(-1)
Integer2Ip(1852797041)